In certain systems output files are generated by applying tools to source code. For example, systems may compile and assemble source code files in a single step such that compiler output files are immediately assembled by an assembler. These systems generate target files based on build instructions which retrieve tools successively for each source code file. Further, these systems require calling compilers, assemblers, and other build tools which are generally several times larger than the source files upon which they operate. Accordingly, calling these tools may require significant processing power, and the order in which these tools are called from cache may affect the efficiency of the system.